##---------------------------------------------------------##
##------------------R语言的计量基础性操作------------------##
##---------------------------------------------------------##

##----------------------简单线性回归----------------------##
Olsfit <- lm(mpg~cyl,data=mtcars)                 #简单线性回归命令

#调用回归结果
summary(Olsfit)                                   #展示拟合模型的详细结果
coefficients(Olsfit)                              #列出拟合模型的模型参数（截距项和斜率）, Olsfit$coefficients
confint(Olsfit)                                   #提供模型参数的置信区间（默认95%）
fitted(Olsfit)                                    #列出拟合模型的预测值, Olsfit$fitted.values
residuals(Olsfit)                                 #列出拟合模型的残差值, Olsfit$residuals
anova(Olsfit)                                     #生成一个拟合模型的方差分析表，或者比较两个或更多拟合模型的方差分析表
vcov(Olsfit)                                      #列出模型参数的协方差矩阵
AIC(Olsfit)                                       #输出赤池信息统计量
plot(Olsfit)                                      #生成评价拟合模型的诊断图
predict(Olsfit)                                   #用拟合模型对新的数据集预测响应变量值, Olsfit$fitted.values


#计算各项结果
#OLS系数，β=cov(x,y)/var(x,x)
beta <- cov(mtcars$mpg,mtcars$cyl)/var(mtcars$cyl)

#OLS标准误，β=sqrt(σ^2/Σ(x-x_mean)^2)
A <- sum((mtcars$cyl-mean(mtcars$cyl))^2)
B <- var(Olsfit$residuals)
beta_s.t <- sqrt(B*31/30/A)                       #为什么*31/32？

#计算t值,查表获取显著性
t <- beta/beta_s.t




#plot x & y
Olsfit2 <- lm(cyl~qsec,data=mtcars)                
Olsfit3 <- lm(mpg~qsec,data=mtcars)                 
Olsfit4 <- lm(mpg~cyl+qsec,data=mtcars)                 
Olsfit5 <- lm(Olsfit3$residuals~Olsfit2$residuals,data=mtcars)  


plot(mtcars$mpg,chip2002$cyl)
plot(Olsfit3$residuals,Olsfit2$residuals)

##----------------------工具变量回归-----------------------##
library(AER)                                       # package created by Christian Kleiber & Achim Zeileis 
                                                   # the authors of 《Applied Econometrics with R》
iv_fit1 <- ivreg(mpg~cyl|disp,data=mtcars)       #iv is QTR1 and result in P142
# first stage reg by ols:
iv_fit1_freg <- lm(cyl~disp,data=mtcars)
summary(iv_fit1_freg)    
# Second stage reg by ols:
iv_fit1_Sreg <- lm(mpg~iv_fit1_freg$fitted.values,data=mtcars)
summary(iv_fit1_Sreg)    

